using Microsoft.AspNetCore.Mvc;
using ZZ_ICU.Services.Interfaces;

namespace ZZ_ICU.Controllers
{
    public class LoginController : Controller
    {
        private readonly IAuthService _authService;

        public LoginController(IAuthService authService)
        {
            _authService = authService;
        }

        // GET: /Login
        // 展示登录页面，仅负责渲染视图。
        public IActionResult Index()
        {
            return View();
        }

        [HttpPost]
        // POST: /Login
        // 处理登录提交：
        // 1) 校验必填；2) 数据库按工号与明文密码匹配（演示用，生产应做加盐哈希）；
        // 3) 登录成功将必要的用户信息写入 Session；4) 失败回显错误信息。
        public async Task<IActionResult> Index(string userNo, string password)
        {
            if (string.IsNullOrEmpty(userNo) || string.IsNullOrEmpty(password))
            {
                ViewBag.ErrorMessage = "请输入用户名和密码";
                return View();
            }

            var user = await _authService.ValidateCredentialsAsync(userNo, password);

            if (user != null)
            {
                // 登录成功，保存用户信息到Session
       
                HttpContext.Session.SetString("UserId", user.Value.userId.ToString());
                HttpContext.Session.SetString("UserName", user.Value.userName);
                HttpContext.Session.SetString("UserNo", user.Value.userNo);
                HttpContext.Session.SetString("UserType", user.Value.userType.ToString());

                return RedirectToAction("Index", "Patients");
            }
            else
            {
                ViewBag.ErrorMessage = "用户名或密码错误";
                return View();
            }
        }

        // GET: /Login/Logout
        // 清空 Session 实现登出，并返回登录页。
        public IActionResult Logout()
        {
            HttpContext.Session.Clear();
            return RedirectToAction("Index");
        }
    }
}
